package models

import (
	"time"
)

type Product struct {
	ID            uint      `gorm:"primaryKey" json:"id"`
	Name          string    `gorm:"size:255;not null" json:"name"`
	Model         string    `gorm:"size:255" json:"model"`
	Spec          string    `gorm:"size:255" json:"spec"`
	Location      string    `gorm:"size:255" json:"location"`
	Quantity      int       `gorm:"default:0" json:"quantity"`
	Remark        string    `gorm:"type:text" json:"remark"`
	UserName      string    `gorm:"type:text" json:"userName"`
	WarehouseName string    `gorm:"type:text" json:"warehouse_name"`
	WarehouseID   uint      `json:"warehouse_id"`
	GmtCreate     time.Time `json:"gmt_create"`
	GmtModified   time.Time `json:"gmt_modified"`
	InStorage     string    `gorm:"type:text" json:"in_storage"`
	OutStorage    string    `gorm:"type:text" json:"out_storage"`
	UserAdmin     string    `gorm:"type:text" json:"user_admin"`
	Pic           string    `gorm:"type:text" json:"pic"`
	Types         string    `gorm:"type:text" json:"types"`
	Email         string    `gorm:"size:255" json:"email"` // 邮件地址字段
}

type ProductAdd struct {
	Name        string `json:"name"`
	Model       string `json:"model"`
	Spec        string `json:"spec"`
	Location    string `json:"location"`
	Remark      string `json:"remark"`
	WarehouseID uint   `json:"warehouse_id"`
	InStorage   string `gorm:"type:text" json:"in_storage"`
	OutStorage  string `gorm:"type:text" json:"out_storage"`
	UserAdmin   string `gorm:"type:text" json:"user_admin"`
	Pic         string `gorm:"type:text" json:"pic"`
	Email       string `json:"email"` // 邮件地址字段
}

type ProductUpd struct {
	ID         uint   `json:"id"`
	Name       string `json:"name"`
	Model      string `json:"model"`
	Spec       string `json:"spec"`
	Location   string `json:"location"`
	Quantity   int    `json:"quantity"`
	Remark     string `json:"remark"`
	InStorage  string `gorm:"type:text" json:"in_storage"`
	OutStorage string `gorm:"type:text" json:"out_storage"`
	UserAdmin  string `gorm:"type:text" json:"user_admin"`
	Pic        string `gorm:"type:text" json:"pic"`
	Email      string `json:"email"` // 邮件地址字段
}

type ProductWithWarehouse struct {
	ID            uint      `gorm:"primaryKey" json:"id"`
	Name          string    `gorm:"size:255;not null" json:"name"`
	Model         string    `gorm:"size:255" json:"model"`
	Spec          string    `gorm:"size:255" json:"spec"`
	Location      string    `gorm:"size:255" json:"location"`
	Quantity      int       `gorm:"default:0" json:"quantity"`
	Remark        string    `gorm:"type:text" json:"remark"`
	GmtCreate     time.Time `json:"gmt_create"`
	GmtModified   time.Time `json:"gmt_modified"`
	WarehouseID   uint      `json:"warehouse_id"`
	WarehouseName string    `json:"warehouse_name"`
	InStorage     string    `gorm:"type:text" json:"in_storage"`
	OutStorage    string    `gorm:"type:text" json:"out_storage"`
	UserAdmin     string    `gorm:"type:text" json:"user_admin"`
	Pic           string    `gorm:"type:text" json:"pic"`
	Email         string    `gorm:"size:255" json:"email"` // 邮件地址字段
}

// EmailReminder 邮件提醒记录
type EmailReminder struct {
	ID           uint      `gorm:"primaryKey" json:"id"`
	ProductID    uint      `json:"product_id"`                   // 物资ID
	RecordID     uint      `json:"record_id"`                    // 出入库记录ID
	Email        string    `gorm:"size:255" json:"email"`        // 邮件地址
	ReminderType string    `gorm:"size:50" json:"reminder_type"` // 提醒类型：in_storage, out_storage
	SentAt       time.Time `json:"sent_at"`                      // 发送时间
	GmtCreate    time.Time `json:"gmt_create"`
	GmtModified  time.Time `json:"gmt_modified"`
}
